package tool

import (
	"MoSkeleton/framework/core/dto/response"
	"MoSkeleton/framework/utils"
	"MoSkeleton/models/tool"
	mapset "github.com/deckarep/golang-set/v2"
)

type GenTableSimpleItemResp struct {
	response.ModelResp
	SourceTableName string `json:"sourceTableName,omitempty"`
}

type GenTableDetailResp struct {
	response.ModelResp
	BizId           uint64 `json:"bizId,string,omitempty"`
	SourceTableName string `json:"sourceTableName"`
	TablePrefix     string `json:"tablePrefix"`
	TableComment    string `json:"tableComment"`
	SubTableId      uint64 `json:"subTableId,string"`
	SubTableFkName  string `json:"subTableFkName"`
	StructName      string `json:"structName"`
	TplCategory     string `json:"tplCategory"`
	TplWebType      string `json:"tplWebType"`
	PackagePath     string `json:"packagePath"`
	PackageName     string `json:"packageName"`
	ModuleName      string `json:"moduleName"`
	BusinessName    string `json:"businessName"`
	FunctionName    string `json:"functionName"`
	FunctionAuthor  string `json:"functionAuthor"`
	GenType         string `json:"genType"`
	GenPath         string `json:"genPath"`
	Options         string `json:"options,omitempty"`
	/** 树编码字段 */
	TreeCode string `json:"treeCode,omitempty"`

	/** 树父编码字段 */
	TreeParentCode string `json:"treeParentCode,omitempty"`

	/** 树名称字段 */
	TreeName string `json:"treeName,omitempty"`

	/** 上级菜单ID字段 */
	ParentMenuId string `json:"parentMenuId,omitempty"`

	/** 上级菜单名称字段 */
	ParentMenuName string `json:"parentMenuName,omitempty"`
	CreatedBy      string `json:"createdBy,omitempty"`
	UpdatedBy      string `json:"updatedBy,omitempty"`

	Packages mapset.Set[string]     `json:"packages,omitempty" gorm:"-"`
	Columns  []*tool.GenTableColumn `json:"columns,omitempty" gorm:"foreignkey:TableId"`
}

// 返回包路径，如为空则返回包名称
func (g *GenTableDetailResp) GetPackagePathDefault() string {
	if utils.IsStrEmpty(g.PackagePath) {
		return g.PackageName
	}
	return g.PackagePath
}
